import pymysql
# 封装数据库操作类
from common.get_log import GetLogger


class DButil:
    # 定义一个类属性
    conn = None
    logger = GetLogger.get_logger()
    @classmethod  #不需要创建类的实例。
    def __get_conn(cls):
        # 判断conn是否为空，为空则创建
        if cls.conn is None:
            cls.conn = pymysql.connect(host="localhost",user="root",password="1234",database="ihrm",charset="utf8")
        cls.logger.info("连接数据库成功")
        return cls.conn


    @classmethod
    def __close_conn(cls):
        # 判断conn是否为空，不为空则需要关闭连接
        if cls.conn is not None:
            # 关闭连接
            cls.conn.close()
            # 置空
            cls.conn = None

    # 查询一条语句
    @classmethod
    def select_one(cls,sql):
        cursor = None
        result = None

        try:
            # 连接操作
            cls.conn = cls.__get_conn()
            # 获取游标
            cursor = cls.conn.cursor()
            # 执行sql
            cursor.execute(sql)
            # 查询一条语句
            result =cursor.fetchone()
        except Exception as e:
            print("执行查询语句出错" + str(e))
            cls.logger.error("执行查询语句出错")
        finally:
            #关闭游标
            cursor.close()
            # 关闭连接
            cls.__close_conn()
            # 返回结果
            return result

    # 常用方法： 增删改
    @classmethod
    def uid_db(cls,sql):
        cursor = None
        try:
            # 获取连接
            cls.conn =cls.__get_conn()
            # 获取游标
            cursor = cls.conn.cursor()
            # 执行sql语句
            cursor.execute(sql)
            # 执行sql影响的行数
            print("影响的行数：",cls.conn.affected_rows())
            # 提交事务
            cls.conn.commit()
        except Exception as e :
            print("增删改语句出错：",str(e))
        finally:
            # 关闭游标
            cursor.close()
            # 关闭连接
            cls.__close_conn()



if __name__ == '__main__':
    print(DButil.select_one("select *from ihrm_emp;"))
    # print(DButil.uid_db("update itheima.user set name = '陈天由' where name = '冯海杰';"))
